/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import Bean.Dispositivo;
import Bean.Tipo;
import Conexion.Conexion;
import Configuracion.AppConfig;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author kriss
 */
public class DAO_TipoDispositivo {
    private String SQL = "";
    private PreparedStatement statement;
    ResultSet rs;
    private int id = -1;
    private int bandera = -1;
    private Connection conexion;
    public ArrayList<Tipo> getListaTipoDispositivos() {
        Conexion con = new Conexion(AppConfig.Servidor, AppConfig.Usuario, AppConfig.Contrasena, AppConfig.BD, AppConfig.Puerto);
        ArrayList<Tipo> lista=new ArrayList<Tipo>();
        
        // se verifica que se crea una conexión con el null
        try {
            // se cre la consulta de base de datos.
            SQL = "SELECT * from tipo;";
            System.out.println(SQL);
            statement = con.getConexion().prepareStatement(SQL);
            
            ResultSet result = statement.executeQuery(); //excuteQuery sirve solo para las consultas....

            while (result.next()) {
                Tipo infTipo = new Tipo();
                infTipo.setId(Integer.parseInt(result.getObject("id").toString()));
                infTipo.setCantidad(Integer.parseInt(result.getObject("cantidad").toString()));
                infTipo.setDisponible(Integer.parseInt(result.getObject("disponible").toString()));
                infTipo.setDescripcion(result.getObject("descripcion").toString());
                
                lista.add(infTipo);
                
                
            }
            
            // pregunta si hay más
            if (statement != null) {
                statement.close(); // cierra la xonexión
            }
        } catch (Exception e) {
            System.out.println("Dispositivos consultaID: " + e.toString());
            con.cerrarConexion(); //cierra la conexión
        } finally {
            con.cerrarConexion();
            return lista;
        }
    }
    public int agregaDispositivo(int cantidad, int id) {        
        Conexion con = new Conexion(AppConfig.Servidor, AppConfig.Usuario, AppConfig.Contrasena, AppConfig.BD, AppConfig.Puerto);
        conexion = con.getConexion();
        if (conexion != null) {
            try {
                this.SQL = "update tipo set cantidad=cantidad+?,disponible=disponible+? where id=?";               
                 this.statement = conexion.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);      
                this.statement.setInt(1, cantidad);
                this.statement.setInt(2, cantidad);
                this.statement.setInt(3, id);
                System.out.println(""+statement.toString());
//                this.statement.setString(3, dispositivo.getSerial());
//                this.statement.setInt(4, 1);
//                this.statement.setInt(5, dispositivo.getId_tipo());
                this.bandera = this.statement.executeUpdate();

                if (bandera == 1) {
                    rs = statement.getGeneratedKeys(); 
                    while (rs.next()) { 
                        this.id = rs.getInt(1);
                    }
                }
                if (this.statement != null) { 
                    this.statement.close(); 
                }
            } catch (Exception e) {
                System.out.println("Dispositivos insertaDispositivo: " + e.getMessage());
                con.cerrarConexion();
            } finally {
                con.cerrarConexion();
            }
        }
        return this.id;
    }
    public int actualizaDispositivo(int cantidad, int id) {        
        Conexion con = new Conexion(AppConfig.Servidor, AppConfig.Usuario, AppConfig.Contrasena, AppConfig.BD, AppConfig.Puerto);
        conexion = con.getConexion();
        if (conexion != null) {
            try {
                this.SQL = "update tipo set cantidad=cantidad-?,disponible=disponible-? where id=?";               
                 this.statement = conexion.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);      
                this.statement.setInt(1, cantidad);
                this.statement.setInt(2, cantidad);
                this.statement.setInt(3, id);
                System.out.println(""+statement.toString());
//                this.statement.setString(3, dispositivo.getSerial());
//                this.statement.setInt(4, 1);
//                this.statement.setInt(5, dispositivo.getId_tipo());
                this.bandera = this.statement.executeUpdate();

                if (bandera == 1) {
                    rs = statement.getGeneratedKeys(); 
                    while (rs.next()) { 
                        this.id = rs.getInt(1);
                    }
                }
                if (this.statement != null) { 
                    this.statement.close(); 
                }
            } catch (Exception e) {
                System.out.println("Dispositivos insertaDispositivo: " + e.getMessage());
                con.cerrarConexion();
            } finally {
                con.cerrarConexion();
            }
        }
        return this.id;
    }
}
